//
//  RXStatus.swift
//  weibo
//
//  Created by uncle-R on 15/12/20.
//  Copyright © 2015年 uncle-R. All rights reserved.
//

import UIKit

class RXStatus: NSObject {
    ///创建时间
    var created_at: String?
    ///微博Id
    var id: Int64?
    ///微博正文内容
    var text: String?
    ///来源
    var source:String?
    ///微博配图
    var pic_urls: [[String:AnyObject]]? //数组的里面是字典
    ///转发数
    var reposts_count: Int = 0
    ///评论数
    var comments_count: Int = 0
    ///赞
    var attitudes_count: Int = 0
    
    ///用户模型:    -----user里面存储了 头像,图标,等级等等等等,等..信息.
    var user: RXUser?
    
    //字典转模型
    init(dic: [String: AnyObject]){
        super.init()
        setValuesForKeysWithDictionary(dic)
    }
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
        
    }
    //拦截KVC赋值 手动给usr 转模型.
    override func setValue(value: AnyObject?, forKey key: String) {
        if key == "user" {
            //将字典转成模型
            if let dict = value as? [String: AnyObject]{
                let userModel =  RXUser(dict: dict)
                self.user = userModel
            }
            
            return   //要return 不然会被父类的 KVC 赋值 又覆盖了
        }
        super.setValue(value, forKey: key)
    }
    
    //MARK: - 加载微博数据
   class func mLoadStatus(finished:(statues: [RXStatus]? , error:NSError?)->()){
        //直接掉用网路工具类的方法来加载微博数据
        RXNetworkTool.sharedInsatance.loadStatus { (result, error) -> () in
            if result == nil || error != nil {
                finished(statues: nil, error: nil)
                return
            }
            //判断字典里面是否有statuses,转成数组,数组里存的是字典
            if let array = result?["statuses"] as? [[String: AnyObject]]{
                //能获取到微博数据
                //声明一个空的 模型数组. 数组里面存的RXStatus
                var statues = [RXStatus]()
                //遍历数组
                for dict in array{
                    
                    let status = RXStatus(dic: dict)
                    statues.append(status)
                    
                }
                //所有模型都转换完成,回调外面
                finished(statues: statues, error: nil)
                
            }
            else{
                finished(statues: nil, error: nil)
            }

        }
    }
    
}


